package com.lcf.system.dao;

import com.lcf.system.dto.Pair;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 描述：通用mapper
 *
 * @author lcf
 * @since 2025/3/30 20:09
 */
public interface CommonDao {
    /**
     * 通用动态查询（支持动态主键和分批次IN查询）
     * @param tableName 动态表名
     * @param primaryKey 主键字段名（如 "id", "code"）
     * @param fieldAliases 字段别名映射（字段名 -> 别名，可选）
     * @param idBatches 分批次的主键集合（每批次最多1000条）
     */
    List<Map<String, Object>> selectDynamicData(
            @Param("tableName") String tableName,
            @Param("primaryKey") String primaryKey,
            @Param("fieldAliases") List<Pair<String, String>> fieldAliases,
            @Param("idBatches") List<List<Object>> idBatches
    );
}
